package org.dromara.swimming.domain.bo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.dromara.swimming.domain.Swimming;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * 景点侦测业务对象 swimming
 *
 * @author Ashufen
 * @date 2024-05-07
 */
@Data
@EqualsAndHashCode(callSuper = false)
@AutoMapper(target = Swimming.class, reverseConvertGenerate = false)
public class SwimmingBo implements Serializable {

    /**
     * 编号
     */
    @NotNull(message = "编号不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 图片地址
     */
    @NotBlank(message = "图片地址不能为空", groups = { AddGroup.class })
    private String imageUrl;

    /**
     * ai图片地址
     */
    @NotBlank(message = "ai图片地址不能为空", groups = { AddGroup.class })
    private String aiImageUrl;

    /**
     * 游泳人数
     */
    @NotNull(message = "游泳人数不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer swimming;

    /**
     * 准备游泳人数
     */
    @NotNull(message = "准备游泳人数不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer readySwimming;

    /**
     * 不游泳人数
     */
    @NotNull(message = "不游泳人数不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer noSwimming;

    /**
     * 经度
     */
    @NotNull(message = "经度不能为空", groups = { AddGroup.class, EditGroup.class })
    private Double latitude;

    /**
     * 纬度
     */
    @NotNull(message = "纬度不能为空", groups = { AddGroup.class, EditGroup.class })
    private Double longitude;


    /**
     * 请求参数
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @TableField(exist = false)
    private Map<String, Object> params = new HashMap<>();
}
